Ext.define('cp.view.grid.GestionTurno', {
    extend: 'cp.view.grid.GestionBase',
    alias: 'widget.gestionTurno',
    
    /* Variables de instancia */
    stage: 'Turno',
    idProperty: 'idTurno',
    deleteUrl: 'bin/turno/borrar.php',
    unDeleteUrl: 'bin/turno/recuperar.php',
    
    initComponent: function(){
        this.callParent(arguments);
        
        this.getComponent('top-toolbar').add(
            {xtype:'button', text:'Comprobante', action:'print', iconCls: 'ico-report'}
        );
            
       
        
        this.reconfigure(null,[
            {header: '#', dataIndex: 'idTurno', hidden: true},
            {header: 'Paciente', dataIndex: 'paciente', hidden: false, flex: 2},
            {header: 'Médico', dataIndex: 'medico', hidden: false, flex: 1},
            {header: 'Fecha atención', dataIndex: 'fecha', hidden: false, flex: 1},
            {header: 'Hora atención', dataIndex: 'hora', hidden: false, flex: 1},
            {header: 'Cancelado', dataIndex: 'activo', hidden: false, flex: 1}
    	]);


    },
    verFormularioAlta: function(){
        var form = Ext.create('cp.view.form.AltaTurno',{
            actionUrl: 'bin/turno/agregar.php'
        });
        var win = Ext.create('cp.view.ui.DecoratorForm',{
            aTitle: 'Nuevo turno',
            aForm: form
        });
        win.show();
    },
    verFormularioVista: function(){
        if(this.hayFilaSeleccionada()){
            this.cargarFormularioVista(this.filaSeleccionada().get('idTurno'));
        }else{
            this.mostrarErrNoSeleccion();
        }
    },
    cargarFormularioVista: function(idTurno){
        
        var store = Ext.create('cp.store.form.Turno',{});
        
        Ext.apply(Ext.data.Connection.prototype, {
                async: false
        });
        
        store.load({params:{idTurno: idTurno}});
        
        Ext.apply(Ext.data.Connection.prototype, {
                async: true
        });
        
        var form = Ext.create('cp.view.form.VerTurno',{});
        
        // Ver la forma de pasar este listener al controller

        form.on('afterrender',function(form){
           form.cargarForm(store);
        });
        
        var win = Ext.create('cp.view.ui.DecoratorFormSimple',{
            aTitle: 'Ver turno',
            aForm: form
        });
        win.show();
    },
    borrarItem: function(){
        if(this.hayFilaSeleccionada()){
            Ext.create('cp.view.ui.DeleteConfirm',{
                mensaje: "¿Está seguro de eliminar el " + this.stage.toLowerCase() + " " +
                "para el paciente "+ this.filaSeleccionada().get('paciente')+"  del sistema?",
                target: this
            }).showDialog();
        }else{
            this.mostrarErrNoSeleccion();
        }
    },
    generarComprobante: function(){
        if(this.hayFilaSeleccionada()){
            this.crearHtml(this.filaSeleccionada().get('idTurno'));
        }else{
            this.mostrarErrNoSeleccion();
        }
    },
    crearHtml: function(idTurno){
        var me = this;
        Ext.Ajax.request({
            params: {
                turno: idTurno
            },
            method: 'POST',
            url: 'bin/turno/generarComprobante.php',
            success: function(response){
                var re = Ext.JSON.decode(response.responseText);   
                if(re.success){
                    me.mostrarComprobante(re.file);
                }else{
                    Ext.create('cp.view.ui.AlertErr',{mensaje:re.msg}).showDialog();   
                }
            }
        });
    },
    mostrarComprobante: function(filename){
        
        
        var panel = Ext.create('Ext.panel.Panel',{
           autoLoad: 'tmp/' + filename
        });
        
        var win = Ext.create('Ext.window.Window',{});
        win.add(panel);
        
        win.show();
        
    },
    verFormularioBusqueda: function(){
        var g = this;
        var form = Ext.create('cp.view.form.BuscarTurno',{});
        
        var win = Ext.create('cp.view.ui.DecoratorFormSearch',{
            aTitle: 'Buscar turnos',
            aForm: form
        });
        
        win.add(form);
        win.show();
    },
    recuperarItem: function(){
        Ext.create('cp.view.ui.AlertErr',{
           mensaje: 'No se puede revertir la baja de un turno.' 
        }).showDialog();
    }
    
});